home *** CD-ROM | disk | FTP | other *** search
- /* Internet LPD Server banner
- * written by David Johnson (dave@cs.olemiss.edu)
- *
- * This code is in the public domain.
- *
- * Revision History:
- *
- * Revision 1.0 91/09/04 dave
- * Initial Release
- *
- */
- #include <stdio.h>
- #include <fcntl.h>
- #include <ctype.h>
- #include <time.h>
- #include <sys/stat.h>
- #ifdef __TURBOC__
- #include <io.h>
- #include <dir.h>
- #endif
- #include "global.h"
- #include "mbuf.h"
- #include "proc.h"
- #include "iface.h"
- #include "socket.h"
- #include "dirutil.h"
- #include "commands.h"
- #include "files.h"
- #include "lp.h"
- #include "lpd.h"
- #include "lpdfilt.h"
-
-
- extern char lrgchars[][12]; /* defined below */
-
- /* in lpdfilt.c */
- extern void output_char __ARGS((struct filter_stream *io_stream, int c));
- extern void output_string __ARGS((struct filter_stream *io_stream, char *s));
- extern void stream_flush __ARGS((struct filter_stream *io_stream));
-
- /* local functions - exported to lpdunsp.c */
- void print_banner __ARGS((struct LPDtrans *LPD, struct filter_stream *io_stream, char *username));
-
- /* local functions - private */
- static void print_large __ARGS((char *string, int width, struct filter_stream *io_stream));
-
- /*
- * Print a banner for the current job
- */
- void
- print_banner( LPD, io_stream, username )
- struct LPDtrans *LPD;
- struct filter_stream *io_stream;
- char *username;
- {
- struct LPDfilter *fptr;
- struct filter_stream output;
- struct filter_parms *parms;
- int s[2], sync;
- char *time_string;
- time_t current_time;
- void (*process) __ARGS((int unused,void *parms,void *unused2));
-
- (void) time( ¤t_time );
- time_string = ctime( ¤t_time );
- rip( time_string );
-
- socketpair( AF_LOCAL, SOCK_STREAM, 0, s );
- seteol( s[0], "\n" );
- seteol( s[1], "\n" );
-
- output.type = IO_SOCKET;
- output.stream.socket = s[0];
-
- /*
- * locate filter info
- */
- process = NULLVFP;
- fptr = filter_list;
- while( fptr->name != NULL ) {
- if( strcmp( fptr->name, LPD->pc->OF ) == 0 ) {
- process = fptr->process;
- break;
- }
- fptr++;
- }
- if( process == NULLVFP ) {
- lpd_log( LPD, "print_banner: filter (%s) not found", LPD->pc->OF );
- return;
- }
- YIELD;
-
- /*
- * Set up parameters for output filter
- */
- parms = mallocw( sizeof( struct filter_parms ) );
-
- parms->printer_name = LPD->name;
- parms->width = 0;
- parms->length = 0;
- parms->literal = 1;
- parms->indent = 0;
- parms->class = NULL;
- parms->jobname = NULL;
- parms->account = NULL;
- parms->login_name = NULL;
- parms->host = NULL;
- parms->format = 'l';
- parms->af_file = NULL;
- parms->ps_start = NULL;
- parms->ps_end = NULL;
- parms->input.type = IO_SOCKET;
- parms->input.stream.socket = s[1];
- parms->pages = 0;
- parms->output = *io_stream;
- parms->sync = &sync;
-
- newproc("LPD filter",2048,process,0,(void *)parms,NULL,0);
-
- /*
- * Print the banner
- */
- if( LPD->pc->SB ) { /* short banner */
- output_string( &output, username );
- output_char( &output, '@' );
- output_string( &output, LPD->job->hostname );
- if( LPD->job->jobname ) {
- output_string( &output, " Job: " );
- output_string( &output, LPD->job->jobname );
- }
- output_string( &output, " Date: " );
- output_string( &output, time_string );
- output_char( &output, '\n' );
- } else { /* normal banner */
- output_string( &output, "\n\n\n" );
- print_large( username, LPD->job->width, &output );
- output_string( &output, "\n\n" );
- print_large( LPD->job->jobname, LPD->job->width, &output );
-
- output_string( &output, "\n\n\n\n\t\t\t\t\tUser: " );
- output_string( &output, username );
- output_string( &output, "\n\t\t\t\t\tName: " );
- output_string( &output, LPD->job->person );
- output_string( &output, "\n\t\t\t\t\tDate: " );
- output_string( &output, time_string );
- if( LPD->job->jobname ) {
- output_string( &output, "\n\t\t\t\t\tJob: " );
- output_string( &output, LPD->job->jobname );
- }
- output_string( &output, "\n\t\t\t\t\tClass: " );
- output_string( &output, LPD->job->class );
- output_char( &output, '\n' );
- }
- output_string( &output, LPD->pc->FF );
- close_s( output.stream.socket );
- YIELD;
-
- pwait( &sync );
- free( parms );
- }
-
- /*
- * Print a line of LARGE characters for the specified string
- */
- static void
- print_large( string, width, io_stream )
- char *string;
- int width;
- struct filter_stream *io_stream;
- {
- int scanline, scancol, charcol, not_empty;
- char line[256], oc, nc, bits, *lp, *sp;
-
- for( scanline = 0; scanline < 12; scanline++ ) {
- charcol = not_empty = 0;
- lp = line;
- sp = string;
- while( *sp && charcol < width - 7 ) { /* don't overflow buffer */
- nc = ((oc = *sp) - ' ') & 0x7f;
- bits = lrgchars[nc][scanline];
- if( bits )
- not_empty++;
- scancol = 7;
- while( scancol-- ) {
- *lp++ = bits & 0x40 ? oc : ' ';
- bits <<= 1;
- }
- *lp++ = ' ';
- *lp++ = ' ';
- sp++;
- charcol += 9;
- }
- *lp++ = '\n';
- *lp = 0;
- if( strlen( line ) > width ) { /* truncate line */
- lp = line + width;
- *lp++ = '\n';
- *lp = 0;
- }
- if( not_empty )
- output_string( io_stream, line );
- else
- output_char( io_stream, '\n' );
- YIELD;
- }
- }
-
- /*
- * large banner character definitions
- */
-
- #define c_______ 0x00
- #define c______1 0x01
- #define c_____1_ 0x02
- #define c____1__ 0x04
- #define c____11_ 0x06
- #define c___1___ 0x08
- #define c___1__1 0x09
- #define c___1_1_ 0x0A
- #define c___11__ 0x0C
-
- #define c__1____ 0x10
- #define c__1__1_ 0x12
- #define c__1_1__ 0x14
- #define c__11___ 0x18
- #define c__111__ 0x1C
- #define c__111_1 0x1D
- #define c__1111_ 0x1E
- #define c__11111 0x1F
-
- #define c_1_____ 0x20
- #define c_1____1 0x21
- #define c_1___1_ 0x22
- #define c_1__1__ 0x24
- #define c_1_1___ 0x28
- #define c_1_1__1 0x29
- #define c_1_1_1_ 0x2A
-
- #define c_11____ 0x30
- #define c_11_11_ 0x36
- #define c_111___ 0x38
- #define c_111__1 0x39
- #define c_111_1_ 0x3A
- #define c_1111__ 0x3C
- #define c_1111_1 0x3D
- #define c_11111_ 0x3E
- #define c_111111 0x3F
-
- #define c1______ 0x40
- #define c1_____1 0x41
- #define c1____1_ 0x42
- #define c1____11 0x43
- #define c1___1__ 0x44
- #define c1___1_1 0x45
- #define c1___11_ 0x46
- #define c1__1___ 0x48
- #define c1__1__1 0x49
- #define c1__11_1 0x4D
- #define c1__1111 0x4F
-
- #define c1_1____ 0x50
- #define c1_1___1 0x51
- #define c1_1_1_1 0x55
- #define c1_1_11_ 0x56
- #define c1_111__ 0x5C
- #define c1_1111_ 0x5E
-
- #define c11____1 0x61
- #define c11___1_ 0x62
- #define c11___11 0x63
- #define c11_1___ 0x68
- #define c11_1__1 0x69
-
- #define c111_11_ 0x76
- #define c1111___ 0x78
- #define c11111__ 0x7C
- #define c111111_ 0x7E
- #define c1111111 0x7F
-
-
- char lrgchars[][12] = {
-
- { c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c__11___,
- c__11___,
- c__11___,
- c__11___,
- c__11___,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c_______,
- c_______ },
-
- { c_1__1__,
- c_1__1__,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c__1_1__,
- c__1_1__,
- c1111111,
- c__1_1__,
- c1111111,
- c__1_1__,
- c__1_1__,
- c_______,
- c_______,
- c_______ },
-
- { c___1___,
- c_11111_,
- c1__1__1,
- c1__1___,
- c_11111_,
- c___1__1,
- c1__1__1,
- c_11111_,
- c___1___,
- c_______,
- c_______ },
-
- { c_1_____,
- c1_1___1,
- c_1___1_,
- c____1__,
- c___1___,
- c__1____,
- c_1___1_,
- c1___1_1,
- c_____1_,
- c_______,
- c_______ },
-
- { c_11____,
- c1__1___,
- c1___1__,
- c_1_1___,
- c__1____,
- c_1_1__1,
- c1___11_,
- c1___11_,
- c_111__1,
- c_______,
- c_______ },
-
- { c___11__,
- c___11__,
- c___1___,
- c__1____,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c____1__,
- c___1___,
- c__1____,
- c__1____,
- c__1____,
- c__1____,
- c__1____,
- c___1___,
- c____1__,
- c_______,
- c_______ },
-
- { c__1____,
- c___1___,
- c____1__,
- c____1__,
- c____1__,
- c____1__,
- c____1__,
- c___1___,
- c__1____,
- c_______,
- c_______ },
-
- { c_______,
- c___1___,
- c1__1__1,
- c_1_1_1_,
- c__111__,
- c_1_1_1_,
- c1__1__1,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c___1___,
- c___1___,
- c___1___,
- c1111111,
- c___1___,
- c___1___,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c__1____,
- c_1_____,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_______,
- c1111111,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c_______,
- c_______ },
-
- { c_______,
- c______1,
- c_____1_,
- c____1__,
- c___1___,
- c__1____,
- c_1_____,
- c1______,
- c_______,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c1____11,
- c1___1_1,
- c1__1__1,
- c1_1___1,
- c11____1,
- c1_____1,
- c_11111_,
- c_______,
- c_______ },
-
- { c___1___,
- c__11___,
- c_1_1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c_11111_,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c______1,
- c_____1_,
- c__111__,
- c_1_____,
- c1______,
- c1______,
- c1111111,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c______1,
- c______1,
- c__1111_,
- c______1,
- c______1,
- c1_____1,
- c_11111_,
- c_______,
- c_______ },
-
- { c_____1_,
- c____11_,
- c___1_1_,
- c__1__1_,
- c_1___1_,
- c1____1_,
- c1111111,
- c_____1_,
- c_____1_,
- c_______,
- c_______ },
-
- { c1111111,
- c1______,
- c1______,
- c11111__,
- c_____1_,
- c______1,
- c______1,
- c1____1_,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_1_____,
- c1______,
- c1______,
- c1_1111_,
- c11____1,
- c1_____1,
- c1_____1,
- c_11111_,
- c_______,
- c_______,
- c_______ },
-
- { c1111111,
- c1_____1,
- c_____1_,
- c____1__,
- c___1___,
- c__1____,
- c__1____,
- c__1____,
- c__1____,
- c_______,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c1_____1,
- c1_____1,
- c_11111_,
- c1_____1,
- c1_____1,
- c1_____1,
- c_11111_,
- c_______,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c1_____1,
- c1_____1,
- c_111111,
- c______1,
- c______1,
- c1_____1,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c_______,
- c_______,
- c__11___,
- c__11___,
- c__1____,
- c_1_____,
- c_______ },
-
- { c____1__,
- c___1___,
- c__1____,
- c_1_____,
- c1______,
- c_1_____,
- c__1____,
- c___1___,
- c____1__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1111111,
- c_______,
- c1111111,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c__1____,
- c___1___,
- c____1__,
- c_____1_,
- c______1,
- c_____1_,
- c____1__,
- c___1___,
- c__1____,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_1____1,
- c_1____1,
- c______1,
- c____11_,
- c___1___,
- c___1___,
- c_______,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_1____1,
- c1__11_1,
- c1_1_1_1,
- c1_1_1_1,
- c1_1111_,
- c1______,
- c_1____1,
- c__1111_,
- c_______,
- c_______,
- c_______ },
-
- { c__111__,
- c_1___1_,
- c1_____1,
- c1_____1,
- c1111111,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c111111_,
- c_1____1,
- c_1____1,
- c_1____1,
- c_11111_,
- c_1____1,
- c_1____1,
- c_1____1,
- c111111_,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_1____1,
- c1______,
- c1______,
- c1______,
- c1______,
- c1______,
- c_1____1,
- c__1111_,
- c_______,
- c_______,
- c_______ },
-
- { c11111__,
- c_1___1_,
- c_1____1,
- c_1____1,
- c_1____1,
- c_1____1,
- c_1____1,
- c_1___1_,
- c11111__,
- c_______,
- c_______,
- c_______ },
-
- { c1111111,
- c1______,
- c1______,
- c1______,
- c111111_,
- c1______,
- c1______,
- c1______,
- c1111111,
- c_______,
- c_______,
- c_______ },
-
- { c1111111,
- c1______,
- c1______,
- c1______,
- c111111_,
- c1______,
- c1______,
- c1______,
- c1______,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_1____1,
- c1______,
- c1______,
- c1______,
- c1__1111,
- c1_____1,
- c_1____1,
- c__1111_,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1111111,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c_11111_,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c_11111_,
- c_______,
- c_______,
- c_______ },
-
- { c__11111,
- c____1__,
- c____1__,
- c____1__,
- c____1__,
- c____1__,
- c____1__,
- c1___1__,
- c_111___,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1____1_,
- c1___1__,
- c1__1___,
- c1_1____,
- c11_1___,
- c1___1__,
- c1____1_,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c1______,
- c1______,
- c1______,
- c1______,
- c1______,
- c1______,
- c1______,
- c1______,
- c1111111,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c11___11,
- c1_1_1_1,
- c1__1__1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c11____1,
- c1_1___1,
- c1__1__1,
- c1___1_1,
- c1____11,
- c1_____1,
- c1_____1,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c__111__,
- c_1___1_,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c_1___1_,
- c__111__,
- c_______,
- c_______,
- c_______ },
-
- { c111111_,
- c1_____1,
- c1_____1,
- c1_____1,
- c111111_,
- c1______,
- c1______,
- c1______,
- c1______,
- c_______,
- c_______,
- c_______ },
-
- { c__111__,
- c_1___1_,
- c1_____1,
- c1_____1,
- c1_____1,
- c1__1__1,
- c1___1_1,
- c_1___1_,
- c__111_1,
- c_______,
- c_______,
- c_______ },
-
- { c111111_,
- c1_____1,
- c1_____1,
- c1_____1,
- c111111_,
- c1__1___,
- c1___1__,
- c1____1_,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c_11111_,
- c1_____1,
- c1______,
- c1______,
- c_11111_,
- c______1,
- c______1,
- c1_____1,
- c_11111_,
- c_______,
- c_______,
- c_______ },
-
- { c1111111,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c_11111_,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c1_____1,
- c_1___1_,
- c_1___1_,
- c__1_1__,
- c__1_1__,
- c___1___,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c1_____1,
- c1_____1,
- c1__1__1,
- c1__1__1,
- c1_1_1_1,
- c11___11,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c_1___1_,
- c__1_1__,
- c___1___,
- c__1_1__,
- c_1___1_,
- c1_____1,
- c1_____1,
- c_______,
- c_______,
- c_______ },
-
- { c1_____1,
- c1_____1,
- c_1___1_,
- c__1_1__,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c1111111,
- c______1,
- c_____1_,
- c____1__,
- c___1___,
- c__1____,
- c_1_____,
- c1______,
- c1111111,
- c_______,
- c_______,
- c_______ },
-
- { c_1111__,
- c_1_____,
- c_1_____,
- c_1_____,
- c_1_____,
- c_1_____,
- c_1_____,
- c_1_____,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c1______,
- c_1_____,
- c__1____,
- c___1___,
- c____1__,
- c_____1_,
- c______1,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c__1111_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c__1111_,
- c_______,
- c_______,
- c_______ },
-
- { c___1___,
- c__1_1__,
- c_1___1_,
- c1_____1,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c1111111,
- c_______ },
-
- { c__11___,
- c__11___,
- c___1___,
- c____1__,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_1111__,
- c_____1_,
- c_11111_,
- c1_____1,
- c1____11,
- c_1111_1,
- c_______,
- c_______,
- c_______ },
-
- { c1______,
- c1______,
- c1______,
- c1_111__,
- c11___1_,
- c1_____1,
- c1_____1,
- c11___1_,
- c1_111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_1111__,
- c1____1_,
- c1______,
- c1______,
- c1____1_,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c_____1_,
- c_____1_,
- c_____1_,
- c_111_1_,
- c1___11_,
- c1____1_,
- c1____1_,
- c1___11_,
- c_111_1_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_1111__,
- c1____1_,
- c111111_,
- c1______,
- c1____1_,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c___11__,
- c__1__1_,
- c__1____,
- c__1____,
- c11111__,
- c__1____,
- c__1____,
- c__1____,
- c__1____,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_111_1_,
- c1___11_,
- c1____1_,
- c1____1_,
- c1___11_,
- c_111_1_,
- c_____1_,
- c1____1_,
- c_1111__ },
-
- { c1______,
- c1______,
- c1______,
- c1_111__,
- c11___1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c___1___,
- c_______,
- c__11___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c__111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c____11_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_____1_,
- c_1___1_,
- c__111__ },
-
- { c1______,
- c1______,
- c1______,
- c1___1__,
- c1__1___,
- c1_1____,
- c11_1___,
- c1___1__,
- c1____1_,
- c_______,
- c_______,
- c_______ },
-
- { c__11___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c__111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1_1_11_,
- c11_1__1,
- c1__1__1,
- c1__1__1,
- c1__1__1,
- c1__1__1,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1_111__,
- c11___1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_1111__,
- c1____1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1_111__,
- c11___1_,
- c1____1_,
- c1____1_,
- c11___1_,
- c1_111__,
- c1______,
- c1______,
- c1______ },
-
- { c_______,
- c_______,
- c_______,
- c_111_1_,
- c1___11_,
- c1____1_,
- c1____1_,
- c1___11_,
- c_111_1_,
- c_____1_,
- c_____1_,
- c_____1_ },
-
- { c_______,
- c_______,
- c_______,
- c1_111__,
- c11___1_,
- c1______,
- c1______,
- c1______,
- c1______,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c_1111__,
- c1____1_,
- c_11____,
- c___11__,
- c1____1_,
- c_1111__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c__1____,
- c__1____,
- c11111__,
- c__1____,
- c__1____,
- c__1____,
- c__1__1_,
- c___11__,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1____1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c1___11_,
- c_111_1_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1_____1,
- c1_____1,
- c1_____1,
- c_1___1_,
- c__1_1__,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1_____1,
- c1__1__1,
- c1__1__1,
- c1__1__1,
- c1__1__1,
- c_11_11_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1____1_,
- c_1__1__,
- c__11___,
- c__11___,
- c_1__1__,
- c1____1_,
- c_______,
- c_______,
- c_______ },
-
- { c_______,
- c_______,
- c_______,
- c1____1_,
- c1____1_,
- c1____1_,
- c1____1_,
- c1___11_,
- c_111_1_,
- c_____1_,
- c1____1_,
- c_1111__ },
-
- { c_______,
- c_______,
- c_______,
- c111111_,
- c____1__,
- c___1___,
- c__1____,
- c_1_____,
- c111111_,
- c_______,
- c_______,
- c_______ },
-
- { c___11__,
- c__1____,
- c__1____,
- c__1____,
- c_1_____,
- c__1____,
- c__1____,
- c__1____,
- c___11__,
- c_______,
- c_______,
- c_______ },
-
- { c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c___1___,
- c_______,
- c_______,
- c_______ },
-
- { c__11___,
- c____1__,
- c____1__,
- c____1__,
- c_____1_,
- c____1__,
- c____1__,
- c____1__,
- c__11___,
- c_______,
- c_______,
- c_______ },
-
- { c_11____,
- c1__1__1,
- c____11_,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______,
- c_______ },
-
- { c_1__1__,
- c1__1__1,
- c__1__1_,
- c_1__1__,
- c1__1__1,
- c__1__1_,
- c_1__1__,
- c1__1__1,
- c__1__1_,
- c_______,
- c_______,
- c_______ },
-
- };
-
-